import {ClassType} from '../type';


/**
 * 属性信息
 */
export interface PropertyMeta {
  /**
   * 属性名称
   */
  name: string;
  /**
   * 属性类型
   */
  type: ClassType<any>;
}

/**
 * 方法属性信息
 */
export interface MethodMeta {
  /**
   * 方法名称
   */
  name: string;
  /**
   * 方法返回值类型
   */
  returnType: ClassType<any>;
  /**
   * 方法属性描述
   */
  descriptor: TypedPropertyDescriptor<Function>;
}

/**
 * 参数信息
 */
export interface ParameterMeta {
  /**
   * 参数所在方法参数列表中的索引
   */
  index: number;
  /**
   * 参数类型
   */
  type: ClassType<any>;
  /**
   * 参数所在方法名
   */
  method: string;
}
